In multi-threaded, multi-processor applications, such as networking applications, data integrity for a so-called “critical section” of a program, that is, a code section for which only one thread has exclusive modification privileges for a global resource (e.g., a buffer memory) at any one time, can be maintained by allowing only one execution thread on one processor to execute the critical section at any given time. This restriction protects coherency during read-modify-write operations. Ownership of the critical section can be passed from thread to thread and processor to processor through the use of various signaling mechanisms.